package com.atguigu.common.exception;

import com.atguigu.common.result.ResponseEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;

/**
 * @author Alice
 * @since 2021-08-27 星期五 18:15
 */
@Slf4j
public class Assert {
  /**
   * 断言对象不为空
   * 如果对象obj为空，则抛出异常
   */
  public static void notNull(Object o, ResponseEnum tip) {
    if (o == null) {
      log.error("object is null.");
      throw new BusinessException(tip);
    }
  }


  /**
   * 断言对象为空
   * 如果对象obj不为空，则抛出异常
   */
  public static void isNull(Object object, ResponseEnum responseEnum) {
    if (object != null) {
      log.info("obj is not null......");
      throw new BusinessException(responseEnum);
    }
  }

  /**
   * 断言表达式为真
   * 如果不为真，则抛出异常
   */
  public static void isTrue(boolean expression, ResponseEnum responseEnum) {
    if (!expression) {
      log.info("fail...............");
      throw new BusinessException(responseEnum);
    }
  }

  /**
   * 断言两个对象不相等
   * 如果相等，则抛出异常
   */
  public static void notEquals(Object m1, Object m2, ResponseEnum responseEnum) {
    if (m1.equals(m2)) {
      log.info("equals...............");
      throw new BusinessException(responseEnum);
    }
  }

  /**
   * 断言两个对象相等
   * 如果不相等，则抛出异常
   */
  public static void equals(Object m1, Object m2, ResponseEnum responseEnum) {
    if (!m1.equals(m2)) {
      log.info("not equals...............");
      throw new BusinessException(responseEnum);
    }
  }

  /**
   * 断言参数不为空
   * 如果为空，则抛出异常
   */
  public static void notEmpty(String s, ResponseEnum responseEnum) {
    if (StringUtils.isEmpty(s)) {
      log.info("is empty...............");
      throw new BusinessException(responseEnum);
    }
  }
}
